﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//Hermite多项式
//求n! / (n - m)!
//不能创建临时变量（第三个变量），实现两个数的交换。
//求⼀个整数存储在内存中的⼆进制中1的个数




//Hermite多项式
//int h(int n, int x)
//{
//	if (n == 0)
//	{
//		return 1;
//	}
//	else if (n == 1)
//	{
//		return 2;
//	}
//	else
//	{
//		return 2 * x * h(n - 1, x) - 2 * (n - 1) * h(n - 2, x);
//	}
//}
//int main()
//{
//	int n = 0;
//	int x = 0;
//	scanf("%d%d", &n, &x);
//	int ret = h(n, x);
//	printf("%d\n", ret);
//	return 0;
//}



//求n! / (n - m)!
//int pai_l(int x)
//{
//	if (x <= 1)
//	{
//		return 1;
//	}
//	else
//	{
//		return x * pai_l(x - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &n, &m);
//	int ret = pai_l(n) / pai_l(n - m);
//	printf("%d\n", ret);
//	return 0;
//}




//不能创建临时变量（第三个变量），实现两个数的交换。
//int main()
//{
//	int a = 3;
//	int b = 5;
//	//00000011  ->	a的原码
//	//00000101  ->  b的原码
//	a = a ^ b;//a^b = 00000110 = 6 = a
//	b = a ^ b;//a^b = 00000011 = 3 = b
//	a = a ^ b;//a^b = 00000101 = 5 = a
//	printf("a = %d b = %d\n", a, b);
//	return 0;
//}



//求⼀个整数存储在内存中的⼆进制中1的个数
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);		//输入整数
//	int i = 0;
//	int count = 0;
//	for (i = 0; i < 32; ++i)
//	{
//		if (n & 1)		//比较整数n的二进制的最后一个比特位是不是1
//		{
//			count++;		
//		}
//		n = n >> 1;		//去掉整数n的二进制的最后一个比特位
//	}
//	printf("%d\n", count);	
//	return 0;
//}
//
